var FormWizard = function () {


    return {
        //main function to initiate the module
        init: function () {
            if (!jQuery().bootstrapWizard) {
                return;
            }

            // default form wizard
            $('#form_wizard_1').bootstrapWizard({
                'nextSelector': '.button-next',
                'previousSelector': '.button-previous',
                onTabClick: function (tab, navigation, index) {
                    alert('on tab click disabled');
                    return false;
                },
                onNext: function (tab, navigation, index) {
					var $valid = $("div#tab"+index+" :input").valid();
                    if(!$valid) {
                        $("div#tab"+index+" :input").focusInvalid();
                        return false;
                    }  
                    var total = navigation.find('li').length;
                    var current = index + 1;
                    // set wizard title
                    $('.step-title', $('#form_wizard_1')).text('Step ' + (index + 1) + ' of ' + total);
                    // set done steps
                    jQuery('li', $('#form_wizard_1')).removeClass("done");
                    var li_list = navigation.find('li');
                    for (var i = 0; i < index; i++) {
                        jQuery(li_list[i]).addClass("done");
                    }

                    if (current == 1) {
                        $('#form_wizard_1').find('.button-previous').hide();
                    } else {
                        $('#form_wizard_1').find('.button-previous').show();
                    }

                    if (current >= total) {
                        $('#form_wizard_1').find('.button-next').hide();
                        $('#form_wizard_1').find('.button-submit').show();
                    } else {
                        $('#form_wizard_1').find('.button-next').show();
                        $('#form_wizard_1').find('.button-submit').hide();
                    }
                    App.scrollTo($('.page-title'));
                },
                onPrevious: function (tab, navigation, index) {
                    var total = navigation.find('li').length;
                    var current = index + 1;
                    // set wizard title
                    $('.step-title', $('#form_wizard_1')).text('Step ' + (index + 1) + ' of ' + total);
                    // set done steps
                    jQuery('li', $('#form_wizard_1')).removeClass("done");
                    var li_list = navigation.find('li');
                    for (var i = 0; i < index; i++) {
                        jQuery(li_list[i]).addClass("done");
                    }

                    if (current == 1) {
                        $('#form_wizard_1').find('.button-previous').hide();
                    } else {
                        $('#form_wizard_1').find('.button-previous').show();
                    }

                    if (current >= total) {
                        $('#form_wizard_1').find('.button-next').hide();
                        $('#form_wizard_1').find('.button-submit').show();
                    } else {
                        $('#form_wizard_1').find('.button-next').show();
                        $('#form_wizard_1').find('.button-submit').hide();
                    }

                    App.scrollTo($('.page-title'));
                },
                onTabShow: function (tab, navigation, index) {
                    var total = navigation.find('li').length;
                    var current = index + 1;
                    var $percent = (current / total) * 100;
                    $('#form_wizard_1').find('.bar').css({
                        width: $percent + '%'
                    });
                }
            });

            $('#form_wizard_1').find('.button-previous').hide();
            $('#form_wizard_1 .button-submit').click(function () {
                var $valid = $("#form-staff").valid();
				if(!$valid) {
					$("#form-staff").focusInvalid();
					return false;
				}
				
				FormWizard.sendData();
            }).hide();
        },
		//send data
		sendData: function(){
			$.ajax({
				url: base_url+"staff/form",
				data : $("#form-staff").serialize(),
				beforeSend: function(){
					$('#form_wizard_1 .button-submit').html("Loading <i class=\"m-icon-swapright m-icon-white\">");
				},
				success: function(respon) {
					$('#form_wizard_1 .button-submit').html("Simpan <i class=\"m-icon-swapright m-icon-white\">");
					try {
						var obj = jQuery.parseJSON(respon);
						
						if(obj.status == "success"){
							window.location = obj.redirect;
						}else if(obj.status == "error"){
							$('#form_wizard_1').bootstrapWizard("show",(obj.step-1));
							var navigationLength = $('#form_wizard_1').bootstrapWizard("navigationLength");
							if((obj.step-1) < navigationLength){
								$('#form_wizard_1').find('.button-next').show();
								$('#form_wizard_1').find('.button-submit').hide();
							}
							
							jQuery('li', $('#form_wizard_1')).removeClass("done");
							var li_list = jQuery('li', $('#form_wizard_1')).removeClass("done");
							for (var i = 0; i < obj.step-1; i++) {
								jQuery(li_list[i]).addClass("done");
							}
					
							$.each(obj.msg, function(i, dt) {
								$("#"+dt.id)
									.closest('.help-inline').removeClass('ok');
								$("#"+dt.id)
									.closest('.control-group').removeClass('success').addClass('error'); // set error class to the control group
								$("#"+dt.id).parent().children(".help-inline").text(dt.text);
							})
						}
					} catch (e) {
						// error
						return false;
					}
				},
				type: "post",
				dataType: "html"
			});
		}

    };

}();